extends Node

## 幻兽复活功能测试脚本
## 用于验证战斗胜利时幻兽复活机制

func _ready():
	print("=== 幻兽复活功能测试开始 ===")
	test_phantom_beast_revival_on_victory()
	test_phantom_beast_death_on_defeat()
	print("=== 幻兽复活功能测试完成 ===")

func test_phantom_beast_revival_on_victory():
	"""测试胜利时幻兽复活功能"""
	print("\n--- 测试胜利时幻兽复活 ---")
	
	# 确保有幻兽管理器
	if PhantomBeastManager == null:
		print("❌ PhantomBeastManager 不可用")
		return
	
	# 创建测试幻兽
	var test_monster = {
		"id": "slime",
		"name": "测试史莱姆",
		"max_hp": 60,
		"attack": 12,
		"defense": 3,
		"attack_speed": 80,
		"rarity": "common"
	}
	
	# 强制获得幻兽
	var success = PhantomBeastManager.try_obtain_phantom_beast(test_monster, true)
	if not success:
		print("❌ 无法创建测试幻兽")
		return
	
	# 获取最新创建的幻兽ID
	var beast_ids = PhantomBeastManager.owned_phantom_beasts.keys()
	if beast_ids.is_empty():
		print("❌ 没有找到幻兽")
		return
	
	var test_beast_id = beast_ids[-1]
	print("✓ 创建测试幻兽: %s" % test_beast_id)
	
	# 将幻兽加入队伍
	PhantomBeastManager.add_to_formation(test_beast_id)
	print("✓ 幻兽已加入队伍")
	
	# 获取幻兽初始状态
	var initial_stats = PhantomBeastManager.get_phantom_beast_stats(test_beast_id)
	print("幻兽初始血量: %d/%d" % [initial_stats.current_hp, initial_stats.max_hp])
	
	# 模拟幻兽死亡（设置血量为0）
	PhantomBeastManager.set_phantom_beast_hp(test_beast_id, 0)
	print("✓ 模拟幻兽死亡（血量设为0）")
	
	# 检查幻兽是否被标记为死亡
	var beast_data = PhantomBeastManager.owned_phantom_beasts[test_beast_id]
	if not beast_data.get("is_alive", true):
		print("✓ 幻兽已被标记为死亡")
	else:
		print("❌ 幻兽未被正确标记为死亡")
	
	# 模拟战斗胜利时的复活逻辑
	print("\n模拟战斗胜利，执行复活逻辑...")
	PhantomBeastManager.set_phantom_beast_hp(test_beast_id, 1)
	print("✓ 幻兽复活，血量设为1")
	
	# 验证复活结果
	var revived_stats = PhantomBeastManager.get_phantom_beast_stats(test_beast_id)
	var revived_data = PhantomBeastManager.owned_phantom_beasts[test_beast_id]
	
	if revived_stats.current_hp == 1 and revived_data.get("is_alive", false):
		print("✅ 幻兽复活成功！血量: %d/%d, 存活状态: %s" % [revived_stats.current_hp, revived_stats.max_hp, revived_data.is_alive])
	else:
		print("❌ 幻兽复活失败！血量: %d/%d, 存活状态: %s" % [revived_stats.current_hp, revived_stats.max_hp, revived_data.get("is_alive", false)])

func test_phantom_beast_death_on_defeat():
	"""测试失败时幻兽死亡功能"""
	print("\n--- 测试失败时幻兽死亡 ---")
	
	if PhantomBeastManager == null:
		print("❌ PhantomBeastManager 不可用")
		return
	
	# 重新获取之前创建的幻兽（因为死亡后会从队伍移除，但仍然存在于owned_phantom_beasts中）
	var beast_ids = PhantomBeastManager.owned_phantom_beasts.keys()
	if beast_ids.is_empty():
		print("❌ 没有找到任何幻兽")
		return
	
	var test_beast_id = beast_ids[-1]  # 使用最后创建的幻兽
	print("✓ 使用测试幻兽: %s" % test_beast_id)
	
	# 先让幻兽复活并加入队伍
	var stats = PhantomBeastManager.get_phantom_beast_stats(test_beast_id)
	PhantomBeastManager.set_phantom_beast_hp(test_beast_id, stats.max_hp)
	PhantomBeastManager.add_to_formation(test_beast_id)
	print("✓ 幻兽血量已恢复满血并重新加入队伍: %d/%d" % [stats.max_hp, stats.max_hp])
	
	# 模拟战斗失败时的死亡逻辑
	print("\n模拟战斗失败，执行死亡逻辑...")
	PhantomBeastManager.set_phantom_beast_hp(test_beast_id, 0)
	print("✓ 幻兽血量设为0（死亡）")
	
	# 验证死亡结果
	var death_stats = PhantomBeastManager.get_phantom_beast_stats(test_beast_id)
	var death_data = PhantomBeastManager.owned_phantom_beasts[test_beast_id]
	
	if death_stats.current_hp == 0 and not death_data.get("is_alive", true):
		print("✅ 幻兽死亡成功！血量: %d/%d, 存活状态: %s" % [death_stats.current_hp, death_stats.max_hp, death_data.is_alive])
	else:
		print("❌ 幻兽死亡失败！血量: %d/%d, 存活状态: %s" % [death_stats.current_hp, death_stats.max_hp, death_data.get("is_alive", true)])
	
	# 检查是否从队伍中移除
	var updated_formation = PhantomBeastManager.get_active_formation_ids()
	if test_beast_id in updated_formation:
		print("❌ 死亡幻兽仍在队伍中")
	else:
		print("✅ 死亡幻兽已从队伍中移除")